home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / text / DefaultHighlighter.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  5.1 KB  |  176 lines

  1. package javax.swing.text;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Graphics;
  5. import java.awt.Insets;
  6. import java.awt.Rectangle;
  7. import java.awt.Shape;
  8. import java.util.Vector;
  9. import javax.swing.plaf.TextUI;
  10.  
  11. public class DefaultHighlighter extends LayeredHighlighter {
  12.    private Vector highlights = new Vector();
  13.    private JTextComponent component;
  14.    private boolean drawsLayeredHighlights = true;
  15.    public static LayeredHighlighter.LayerPainter DefaultPainter = new DefaultHighlightPainter((Color)null);
  16.  
  17.    public Object addHighlight(int var1, int var2, Highlighter.HighlightPainter var3) throws BadLocationException {
  18.       Document var4 = this.component.getDocument();
  19.       TextUI var5 = this.component.getUI();
  20.       Object var6 = this.getDrawsLayeredHighlights() && var3 instanceof LayeredHighlighter.LayerPainter ? new LayeredHighlightInfo(this) : new HighlightInfo(this);
  21.       ((HighlightInfo)var6).painter = var3;
  22.       ((HighlightInfo)var6).p0 = var4.createPosition(var1);
  23.       ((HighlightInfo)var6).p1 = var4.createPosition(var2);
  24.       this.highlights.addElement(var6);
  25.       var5.damageRange(this.component, var1, var2);
  26.       return var6;
  27.    }
  28.  
  29.    public void changeHighlight(Object var1, int var2, int var3) throws BadLocationException {
  30.       Document var4 = this.component.getDocument();
  31.       TextUI var5 = this.component.getUI();
  32.       if (var1 instanceof LayeredHighlightInfo) {
  33.          LayeredHighlightInfo var6 = (LayeredHighlightInfo)var1;
  34.          if (var6.width > 0 && var6.height > 0) {
  35.             this.component.repaint(var6.x, var6.y, var6.width, var6.height);
  36.          }
  37.  
  38.          var6.width = var6.height = 0;
  39.          var6.p0 = var4.createPosition(var2);
  40.          var6.p1 = var4.createPosition(var3);
  41.          var5.damageRange(this.component, Math.min(var2, var3), Math.max(var2, var3));
  42.       } else {
  43.          HighlightInfo var9 = (HighlightInfo)var1;
  44.          int var7 = var9.p0.getOffset();
  45.          int var8 = var9.p1.getOffset();
  46.          if (var2 == var7) {
  47.             var5.damageRange(this.component, Math.min(var8, var3), Math.max(var8, var3));
  48.          } else if (var3 == var8) {
  49.             var5.damageRange(this.component, Math.min(var2, var7), Math.max(var2, var7));
  50.          } else {
  51.             var5.damageRange(this.component, var7, var8);
  52.             var5.damageRange(this.component, var2, var3);
  53.          }
  54.  
  55.          var9.p0 = var4.createPosition(var2);
  56.          var9.p1 = var4.createPosition(var3);
  57.       }
  58.  
  59.    }
  60.  
  61.    public void deinstall(JTextComponent var1) {
  62.       this.component = null;
  63.    }
  64.  
  65.    public boolean getDrawsLayeredHighlights() {
  66.       return this.drawsLayeredHighlights;
  67.    }
  68.  
  69.    public Highlighter.Highlight[] getHighlights() {
  70.       Highlighter.Highlight[] var1 = new Highlighter.Highlight[this.highlights.size()];
  71.       this.highlights.copyInto(var1);
  72.       return var1;
  73.    }
  74.  
  75.    public void install(JTextComponent var1) {
  76.       this.component = var1;
  77.       this.removeAllHighlights();
  78.    }
  79.  
  80.    public void paint(Graphics var1) {
  81.       Rectangle var2 = new Rectangle(this.component.getSize());
  82.       Insets var3 = this.component.getInsets();
  83.       var2.x += var3.left;
  84.       var2.y += var3.top;
  85.       var2.width -= var3.left + var3.right;
  86.       var2.height -= var3.top + var3.bottom;
  87.       int var4 = this.highlights.size();
  88.  
  89.       for(int var5 = 0; var5 < var4; ++var5) {
  90.          HighlightInfo var6 = (HighlightInfo)this.highlights.elementAt(var5);
  91.          if (!(var6 instanceof LayeredHighlightInfo)) {
  92.             Highlighter.HighlightPainter var7 = var6.getPainter();
  93.             var7.paint(var1, var6.getStartOffset(), var6.getEndOffset(), var2, this.component);
  94.          }
  95.       }
  96.  
  97.    }
  98.  
  99.    public void paintLayeredHighlights(Graphics var1, int var2, int var3, Shape var4, JTextComponent var5, View var6) {
  100.       for(int var7 = this.highlights.size() - 1; var7 >= 0; --var7) {
  101.          Object var8 = this.highlights.elementAt(var7);
  102.          if (var8 instanceof LayeredHighlightInfo) {
  103.             LayeredHighlightInfo var9 = (LayeredHighlightInfo)var8;
  104.             int var10 = ((HighlightInfo)var9).getStartOffset();
  105.             int var11 = ((HighlightInfo)var9).getEndOffset();
  106.             if (var2 < var10 && var3 > var10 || var2 >= var10 && var2 < var11) {
  107.                var9.paintLayeredHighlights(var1, var2, var3, var4, var5, var6);
  108.             }
  109.          }
  110.       }
  111.  
  112.    }
  113.  
  114.    public void removeAllHighlights() {
  115.       TextUI var1 = this.component.getUI();
  116.       if (this.getDrawsLayeredHighlights()) {
  117.          int var2 = this.highlights.size();
  118.          if (var2 != 0) {
  119.             int var3 = 0;
  120.             int var4 = 0;
  121.             int var5 = 0;
  122.             int var6 = 0;
  123.  
  124.             for(int var7 = 0; var7 < var2; ++var7) {
  125.                LayeredHighlightInfo var8 = (LayeredHighlightInfo)this.highlights.elementAt(var7);
  126.                var3 = Math.min(var3, var8.x);
  127.                var4 = Math.min(var4, var8.y);
  128.                var5 = Math.max(var5, var8.x + var8.width);
  129.                var6 = Math.max(var6, var8.y + var8.height);
  130.             }
  131.  
  132.             if (var3 != var5 && var4 != var6) {
  133.                this.component.repaint(var3, var4, var5 - var3, var6 - var4);
  134.             }
  135.  
  136.             this.highlights.removeAllElements();
  137.          }
  138.       } else if (var1 != null) {
  139.          int var9 = this.highlights.size();
  140.          if (var9 != 0) {
  141.             int var10 = Integer.MAX_VALUE;
  142.             int var11 = 0;
  143.  
  144.             for(int var12 = 0; var12 < var9; ++var12) {
  145.                HighlightInfo var13 = (HighlightInfo)this.highlights.elementAt(var12);
  146.                var10 = Math.min(var10, var13.p0.getOffset());
  147.                var11 = Math.max(var11, var13.p1.getOffset());
  148.             }
  149.  
  150.             var1.damageRange(this.component, var10, var11);
  151.             this.highlights.removeAllElements();
  152.          }
  153.       }
  154.  
  155.    }
  156.  
  157.    public void removeHighlight(Object var1) {
  158.       if (var1 instanceof LayeredHighlightInfo) {
  159.          LayeredHighlightInfo var2 = (LayeredHighlightInfo)var1;
  160.          if (var2.width > 0 && var2.height > 0) {
  161.             this.component.repaint(var2.x, var2.y, var2.width, var2.height);
  162.          }
  163.       } else {
  164.          TextUI var4 = this.component.getUI();
  165.          HighlightInfo var3 = (HighlightInfo)var1;
  166.          var4.damageRange(this.component, var3.p0.getOffset(), var3.p1.getOffset());
  167.       }
  168.  
  169.       this.highlights.removeElement(var1);
  170.    }
  171.  
  172.    public void setDrawsLayeredHighlights(boolean var1) {
  173.       this.drawsLayeredHighlights = var1;
  174.    }
  175. }
  176.